class Watcher {
    constructor(vm, key, cb) {
        this.vm = vm;
        // data 的属性名
        this.key = key;
        // 回调函数负责更新视图
        this.cb = cb;

        // 把 watcher 对象记录到 Dep 类的静态属性 target 上
        Dep.target = this;
        // 触发 get 方法，在 get 方法中会调用 addSub
        this.oldValue = vm[key]; // vm[key] 触发 get，会把 wather 添加到 dep
        Dep.target = null;
    }
    // 当数据发生变化的时候更新视图
    update() {
        let newValue = this.vm[this.key];
        if (this.oldValue === newValue) return;

        this.cb(newValue);
    }
}